/*
 * @(#) MeetingDao
 *
 * <br> Copyright:  Copyright (c) 2017
 * <br> @author caijinhuang
 * <br> 2017-12-18 15:57:49
 */

package com.sunsharing.sharemeeting.dao.api;

import org.apache.ibatis.annotations.Param;

import java.util.List;

import com.sunsharing.sharemeeting.entity.Meeting;

public interface MeetingDao {
    /**
     * 插入一条会议记录
     * @param meeting 会议记录对象
     * @return
     */
    public int insertOneMeeting(Meeting meeting);

    public int delMeetingById(@Param("meetingId") String meetingId);

    /**
     * 更新会议记录
     * @param meeting 会议记录对象
     * @return
     */
    public int updateMeeting(Meeting meeting);

    /**
     * 根据userid获取相关会议记录
     * @param userId 用户Id
     * @return
     */

    public List<Meeting> selectMeetingsById(@Param("userId") String userId);

    /**
     * 根据userid查询草稿会议（未发布）
     * @param userId 用户Id
     * @return
     */
    public List<Meeting> selectDraftsMeetingsById(@Param("userId") String userId);

    /**
     * 管理员获取所有会议记录
     * @param meetingTitle 会议标题
     * @return
     */

    public List<Meeting> selectAllMeetings();


    /**
     * 管理员检索所有会议记录
     */
    public List<Meeting> searchMoreMeetings(@Param("meetingTitle") String meetingTitle);

    /**
     * 分页：首页会议记录（用户相关）
     * @param userId 用户id
     * @param page 要查询的页码
     * @return
     */
    public List<Meeting> selectMeetingsByPage(@Param("userId") String userId,@Param("page") int page);

    /**
     * 分页：未发布会议，
     * @param userId 用户Id
     * @param page 页码
     * @return
     */
    public List<Meeting> selectDraftsMeetingsByPage(@Param("userId") String userId,@Param("page") int page);

    /**
     * 分页：标题检索
     * @param userId 用户Id
     * @param meetingTitle 会议标题
     * @param page 页码
     * @return
     */
    public List<Meeting> searchMeetingByPage(@Param("userId") String userId,
                                             @Param("meetingTitle") String meetingTitle,
                                             @Param("page") int page);

    /**
     * 分页：标题检索（管理员检索任意已发布会议）
     * @param meetingTitle 会议标题
     * @param page 页码
     * @return
     */
    public List<Meeting> searchAllByPage(@Param("meetingTitle") String meetingTitle,@Param("page") int page);

    /**
     * 分页：查询所有会议记录（管理员权限）
     * @param page 页码
     * @return
     */
    public List<Meeting> selectAllByPage(@Param("page") int page);


    /**
     * 根据meetingId获取会议详细信息
     * @param meetingId 会议Id
     * @return
     */
    public Meeting selectMeetingDetailByMeetingId(@Param("meetingId") String meetingId);

    /**
     * 会议检索（模糊检索）
     * @param meetingTitle 会议标题
     * @return
     */
    public List<Meeting> searchMeeting(@Param("meetingTitle") String meetingTitle,@Param("userId") String userId);

}